package com.gp.ssmplus.base.core.mybatis.base.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.gp.ssmplus.base.core.mybatis.entity.EntityMap;
import com.gp.ssmplus.base.core.mybatis.model.*;
import com.gp.ssmplus.base.core.mybatis.query.CriteriaQuery;
import java.util.List;

/**
 * 对IService进行方法扩展
 */
public interface IBaseService<T> extends IService<T> {

    default ResultBody listEntityMap(ListModel listModel) {
        return ResultBody.failed("未实现方法");
    }

    /**
     * 自定义分页(xml中配置外键链接查询)
     *
     * @param pageModel
     * @return
     */
    default ResultBody pageList(PageModel pageModel) {
        return ResultBody.failed("未实现方法");
    }

    /**
     * 自定义更新带扩展事件
     */
    default ResultBody edit(UpdateModel updateModel) {
        return ResultBody.failed("未实现方法");
    }

    default ResultBody add(SaveModel model) {
        return ResultBody.failed("未实现方法");
    }

    default ResultBody delete(DeleteModel model) {
        return ResultBody.failed("未实现方法");
    }

    /**
     * 自定义查询单个实体(返回自定义Map类型,便于枚举转换)
     */
    default ResultBody get(GetModel model) {
        return ResultBody.failed("未实现方法");
    }


    List<EntityMap> selectEntityMap(CriteriaQuery<?> cq);

    EntityMap findOne(CriteriaQuery cq);

}
